{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams[\"font.sans-serif\"] = [\"SimHei\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib import ticker"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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kiRpndEexjbbbDMGDBhARBTdJOXa2tqYMWMGjY2NDB061H+bnIFMkiRJ64TW1taOMLbJJpsU3Rx1YdNNN2XGjBksWbKEfv36Fd2cXsEBnJIkSVontM8ZGzBgQMEt0fK0D1VsbW0tuCW9h4FMkiRJ65S+PBTu9ttv55RTTlnqWEqJmTNn8thjj3HppZdy4YUXdpx78MEHefbZZ5cq39TU1LE9ffp0mpubu7fRq6Ev/9t0FwOZJEmSVLBFixaRUmLJkiX8z//8D21tbSxevJi2tjZ23nlnhgwZwr777stVV13FAw88QFNTE62trRx22GFMmzZtqWt94xvf4Oqrrwbgu9/9LqeffvpK719TU8ODDz640nIjR45kxIgRbL/99my//fb069eP9773vUvtP/3002v0M3incg6ZJEmSVLANNtiAiKC8vBzIhl02NzfzwAMPUFZWxh133MH++++/VJ1rrrmG6dOnc+qpp3Lqqady9dVXs+uuu3L88cdzzDHH8NWvfpXf//73PPbYYyu9/8CBAzvuvSJVVVVcdtll7LvvvgAMGTKEe++9l+HDh3fsV1VVrebTv7MZyCRJkrRuO+eknr3f+AmrXWX+/PmMGzeOiy66iLKyMg499FDOOusshg0bRllZGRtssMFS5Z977jnOPvtsnnrqKVJKfO1rX2PXXXfl6quv5vrrr2f99ddnzz33pKmpiUMOOYQdd9yRH/3oR6SUSCkt8y6wiooKXn/99Y79hx9+mIceeojTTjttqXJlZWUcccQRrL/++gDMnj2b0aNHdyzQMXv27FUKdnqLgUySJEkqUGtrK2VlZcyZM4epU6eyYMECpk2bxhZbbNFx7oEHHuCVV14BYMmSJbS2tlJTU8PnPvc5Zs2aBcDOO+/M448/zqGHHkp5eTn9+/dn0aJFHXUA7rrrLg444IClQlN7D9p9993HgQceyJNPPkl9fT1HH300KaWl5n21tbUxefLkFfaQpZS69we2jnEOmSRJklSg3/zmN1RVVXH99dfz/ve/n913353HH3+cyspKzj//fFJK/Otf/+Kxxx7jkEMO4U9/+hM777wz++67LyeeeCI77LADjz32GP/+978pLy/vsoeqoiLrhxk1ahRz5syhubmZadOm0b9/f3bccUcArr/+eq644gr2228/Jk2axOmnn77MIhxtbW0rfZ728KdV0yt6yA4bM45+FY41Vfe6cbR/f1APWYOhKpKkd65PfvKTtLW1ERHccsstXHvttdx5552klGhra+PWW2/lO9/5DjvssAM//OEP+dGPftTldcrLy5kxYwa33XYblZWVtLa2MnnyZJYsWcIee+zBjjvuSFVVVcccr9tuu41PfOITHcMN6+vrOf7443n44YfZZZddurzHiBEjOO644zr2Ow9ZHDRokCsprqZeEcgkSZKkd6qysjJef/11+vfvT0tLC21tbSxcuJDm5maqqqp48803O+ZslUopcfrpp/PGG28wevRoIoIFCxbw9NNPU15eTkqJqVOn0traynbbbbdU3ebmZn784x9z5ZVXdhw7/PDDeeSRR5g+ffoygezNN9+kubmZu+66a6n5Z52HLEI2BHPJkiUdvXJaMX9KkiRJUoGWLFnC4MGD6d+/P21tbTQ3NzN48GBaWlq44oormDFjBkOGDFmmXltbGz/4wQ/4+c9/zlVXXcUHPvAB3v3udzNx4kQAJk2atNzetAsuuIDa2lr222+/jmNVVVVMnjyZAw88kOHDh7Pzzjt3nLvllls4+eST6d+/PxHBwoULmTNnDq2trey00060trayySabAFl4O+mkkzj55JPX5o9pneUYLkmSJKlAFRUVzJkzhyOOOILLLruM0aNHc8UVV/DCCy/w4Q9/mI022oiNN954mXqtra3cc889vPjii0yePJmWlpaOBT9KF9ZIKXX0vAHccccdnHfeeUyaNGmZa+65555cfPHF7LXXXlx33XUddcaOHcvMmTOZPn06f/vb39hqq6247LLL2HTTTbnzzjupqanh9ttv54UXXmDWrFmGsdVgIJMkSZIKlFLi61//OjNnzmTgwIFANjervr6eO++8c7nzub70pS8xZswYxo0bx9Zbb81PfvITLr30UoYNG8awYcNYvHgxw4cPZ/jw4QwbNoy//vWv/PKXv+Sggw5i4sSJ1NXVdXndww47jCuvvJJjjz2WAw88sGORjra2Nm6++Wbq6uo44IAD+OY3vwnAlltuyVVXXcU+++zDmWeeyYwZM7rhp7TucsiiJEmSVKA//OEPLF68mCuvvJKbbrqJ8vJyjj32WHbccUeOOeYYxo8fD7y1wmH7sMa//vWvvPrqq8yYMYPZs2cD8Itf/IKTTsreu1ZZWcnzzz+/1CIb22+/PbfeemvHS6ZbW1tp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qaeeYsyYMcvcp7m5mR//+MdceeWVHccOP/xwHnnkEaZPn75MIHvzzTdpbm7mrrvuWmr+WedFPSBbRGTJkiXLrBDZjerIXujcpZTSNGCnfPuGiHgwpdSS788CvlhSdlzJdkNE/CqltPJuwbfBOWSSJElSLzBz5kx+97vf0draSlVVFccddxynnnoq++yzD9dddx2DBg3iL3/5CwA/+tGPmDFjBt/5zncAePbZZ5k0aRI333wzFRUVHHPMMZx55pl88YtfZMCAAcvc64ILLqC2tpb99tuv41hVVRWTJ0/ma1/7Wse8sna33HIL22yzDSNGjGD48OEMHjyYyspKZs2axU477cTAgQMZPnw4w4cPZ8iQIVxyySXd+JNaWkqpaXVC0+osZ9/dYQwMZJIkSVKv8Pe//51f/OIX3HrrrR1DAMeNG8dtt93G6NGjeeaZZ5gwYQIA3/rWt7j//vvZYIMNgKxn7fDDD+fEE0/knHPOYeONN+aee+7h9NNPX+Y+d9xxB+eddx6TJnVe6wL23HNPLr74Yvbaay+uu+66jjljY8eOZebMmUyfPp2//e1vbLXVVlx22WVsuumm3HnnnR3vMXvhhReYNWsWJ598cnf9mNY5BjJJkiSpQO2hZ9SoUdx9992MGjWqY6XCf/3rX5x66qnsv//+zJw5s6NHbMCAAQwdOnSZax177LHMmTOH+vp6Jk+ezGabbbbU+V/+8pccdNBBTJw4kbq6umXqAxx22GFceeWVHHvssRx44IEdi3S0tbVx8803U1dXxwEHHMA3v/lNALbcckuuuuoq9tlnH84880xmzJjR5XXVNeeQSZIkaZ22ui9q7mnNzcuuF9Ee0tqXuC8rK2Pq1KlccsklS70MurW1lba2NhYvXszdd9/NpZdeSnl5OQcccABjx45l7Nix7LPPPmy99da85z3v4cADD+TWW29l//3376jf2trK/Pnzl5ob9qUvfYnddtutY2n8Rx99lIMPPpjBgwdz4403svvuu3e0c8mSJYwZM4YnnniC8ePHM2LECM444wzGjx/f3T+6dYI9ZJIkSVKBWlpaljk2YMAAqqurATjyyCO55ppr2Hjjjbn77rs55phjOsLTwoULaW5u5vLLL+fYY4/l85//PE8++SS33347999/Py0tLRx55JGce+65lJWVUVVV1RHGAB599FEGDBjA5ptvztZb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\n",
      "text/plain": [
       "<Figure size 1000x500 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def try_stack_bar():\n",
    "    '''\n",
    "      This example to learn helper methods of xaxis and yaxis\n",
    "    '''\n",
    "    fig = plt.figure(figsize=(10,5),dpi=100)\n",
    "    ax = fig.add_subplot(1,1,1)\n",
    "    \n",
    "    # 产生数据\n",
    "    x = np.arange(1,11)\n",
    "    fruit = [\"香蕉\",\"菠萝\",\"榴莲\",\"苹果\",\"葡萄\",\"橙橘\",\"哈密瓜\",\"荔枝\",\"甜枣\",\"西瓜\"]\n",
    "    y1 = np.random.randint(1,8,size=10)\n",
    "    y2 = np.random.randint(1,8,size=10)\n",
    "    \n",
    "    ax.barh(x,y1+y2,color=\"#ff8474\",label=\"新鲜水果\",height=0.9)\n",
    "    ax.barh(x,y1,color=\"#583d72\",label=\"隔夜水果\",height=0.9)\n",
    "    \n",
    "    ax.set_xlim(0,15)\n",
    "    \n",
    "    ax.xaxis.set_label_text(\"人数\")\n",
    "    ax.xaxis.set_tick_params(which=\"minor\",width=2,color=\"#aa2ee6\",length=4)\n",
    "    ax.xaxis.set_minor_locator(ticker.MultipleLocator(1))\n",
    "    # 给主刻度标签增加一个后缀“个”\n",
    "    def add_ge(x,pos):\n",
    "        return \"%d个\"%(int(x))\n",
    "    ax.xaxis.set_major_formatter(ticker.FuncFormatter(add_ge))\n",
    "    ax.xaxis.set_label_coords(1.03,0)\n",
    "    ax.xaxis.get_label().set(rotation=360,color=\"#aa2ee6\",fontsize=16)\n",
    "#     ax.xaxis.set_ticks_position(\"both\")\n",
    "#     ax.xaxis.tick_top()\n",
    "    \n",
    "    \n",
    "    ax.yaxis.set_label_text(\"水果\")\n",
    "    ax.yaxis.set_ticks(x)\n",
    "    ax.yaxis.set_ticklabels(fruit)\n",
    "    #ax.yaxis.set_label_position(\"right\")\n",
    "    ax.yaxis.set_label_coords(0,1.01)\n",
    "    ax.yaxis.get_label().set(rotation=360,color=\"#aa2ee6\",fontsize=16)\n",
    "    ax.yaxis.set_tick_params(labelright=True,labelleft=False)\n",
    "    ax.yaxis.tick_right()\n",
    "    \n",
    "    ax.legend()\n",
    "\n",
    "try_stack_bar()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
